CosyOS-II API 用户参考手册  1.0.3
宏定义
消息队列

消息队列是唯一能够实现并发消息同步的手段。 更多...

消息队列 的协作图:

宏定义

#define uExternQueue_Static(que)   sCSV_ExternQueue_Static(que)
 声明静态队列 更多...
 
#define uExternQueue_Dynamic(que)   sCSV_ExternQueue_Dynamic(que)
 声明动态队列 更多...
 
#define uCreateQueue_Static(que, mode, len)   sCSV_CreateQueue_Static(que, mode, len)
 创建静态队列 更多...
 
#define uCreateQueue_Dynamic(que, mode, len)   sCSV_CreateQueue_Dynamic(que, mode, len)
 创建动态队列 更多...
 
#define uRecvMsg(que, tc)   sUSV_RecvMsg(que, tc)
 接收消息 更多...
 
#define uSendMsg(que, msg)   sUSV_SendMsg(que, msg)
 发送消息 更多...
 

详细描述

消息队列是唯一能够实现并发消息同步的手段。

消息队列包括静态队列和动态队列。
静态队列:收发消息的效率高,队列占用固定的内存;
动态队列:收发消息的效率低,接收消息后,队列内存可被回收。

注解
每个队列,用户应当自己明确消息的类型和size,此事与OS无关。

宏定义说明

#define uCreateQueue_Dynamic (   que,
  mode,
  len 
)    sCSV_CreateQueue_Dynamic(que, mode, len)

创建动态队列

参数
[in]que队列名称
[in]mode传输模式
0:FIFO(先入先出)
1:LIFO(后入先出)
[in]len队列长度
返回

在文件 ur_api.h1202 行定义.

#define uCreateQueue_Static (   que,
  mode,
  len 
)    sCSV_CreateQueue_Static(que, mode, len)

创建静态队列

参数
[in]que队列名称
[in]mode传输模式
0:FIFO(先入先出)
1:LIFO(后入先出)
[in]len队列长度
返回

在文件 ur_api.h1191 行定义.

#define uExternQueue_Dynamic (   que)    sCSV_ExternQueue_Dynamic(que)

声明动态队列

参数
[in]que队列名称
返回

在文件 ur_api.h1180 行定义.

#define uExternQueue_Static (   que)    sCSV_ExternQueue_Static(que)

声明静态队列

参数
[in]que队列名称
返回

在文件 ur_api.h1173 行定义.

#define uRecvMsg (   que,
  tc 
)    sUSV_RecvMsg(que, tc)

接收消息

参数
[in]que队列名称
[in]tc滴答周期(超时时间)
+0:立即返回
~0:无限等待
返回
消息指针(void *)
返回值
NULL无消息
注解
同型服务:
tRecvMsg(que)
iRecvMsg(que)
警告
任务中接收,不支持在临界区中,包括任务临界区、服务层临界区、全局临界区,或关闭总中断时调用。
中断中接收,队列只能是静态队列,消息缓存只能是静态缓存。

在文件 ur_api.h1218 行定义.

#define uSendMsg (   que,
  msg 
)    sUSV_SendMsg(que, msg)

发送消息

参数
[in]que队列名称
[in]msg消息指针
返回
错误码(s_ecode_t)
返回值
OS_ECODE_NOERROR无错误
ECODE_OVERFLOW_MSGQUEUE消息队列溢出
ECODE_MALLOCFAIL_MSGNODE消息节点内存分配失败
注解
同型服务:
tSendMsg(que, msg),同返回。
iSendMsg(que, msg),无返回。
警告
中断中发送,消息缓存只能是静态缓存。

在文件 ur_api.h1233 行定义.